Principal Component Analysis

Machine learning basic
비지도학습
Author

SEOYEON CHOI

Published

March 28, 2023

Principal Component Analysis

Refernece: 핸즈 온 머신러닝, 최규빈교수님 통계전산강의노트 사이킷런 홈페이지

차원 축소

차원 축소가 필요한 이유

차원 축소를 위한 접근 방법

  1. 투영 Projection
  • ex) 3d 공간 안에 있는 저차원 부분 공간 subspace이 있는데 여기에 수직1 투영하면 평면에 투영된 좌표를 얻음.
  • ex) 아래 그림 처럼 부분 공간 subspace가 휘어있기도 함.(swiss roll 예제) 오른쪽은 왼쪽의 스위스 롤을 펼쳐서 2D 데이터 셋을 얻은 것임.

image
  1. 매니폴드
  • 위 스위스 롤 예제는 2D 매니폴드의 한 예
  • 매니폴드를 펼쳐서 보느냐, 어떻게 경계선을 그어서 보느냐 등 저차원의 매니폴드 공간에 가깝게 놓여있다고 가정2
  • 저차원으로 차원축소 할 수 있지만, 오히려 복잡해지는 경우3도 있다.

\(\star\) 2D 매니폴드는 곡선, 3D 매니폴드는 곡면이라 생각

image

PCA

주성분 분석 principal component analysis

PCA is a statistical technique for reducing the dimensionality of a dataset.

1. 분산 보존

분산이 최대로 보존되는 차원 축소가 정보를 가장 적게 손실되어 합리적으로 보임

2. 주성분

분산이 큰 순서대로 차원의 수만큼 찾음

i번째 축 = 주성분 PC principal component

특이값 분해 SVD singular value decomposition= training set에서 주성분 찾는 방법

교수님 lecture note with julia

  • 이론 : \(X_{n \times m} = U_{n \times n} D_{n \times m} (V_{m \times m})^\top\)
    • ver 1 = \(U, V\)가 모두 직교 행렬
    • ver 2 = \(U\) 또는 \(V\)가 직교 행렬
  • 왜?
    • 데이터 매트릭스 \(X\)가 존재할때 정보는 유지하면서 비용을 줄이는 \(Z\)4를 찾고 싶다.
    • \(Z\) 구하는 법
      • \(Z = \tilde{U} \tilde{D}\) \(\to\) \(\tilde{U} \tilde{D} = X\tilde{V}\) \(\to\) \(Z = X\tilde{V}\)
      • \(X^\top X = \psi \lambda \psi^\top\)을 구해서 \(Z = X\tilde{\psi}\) \(\to\) \(\hat{X} = Z\tilde{\psi}^\top\)

\(\star\) PCA는 데이터셋의 평균이 0이라고 가정

3. d차원으로 투영하기

\(X_{d-proj,n \times d} = X_{n \times M} W_{d,n \times d}\)

4. 설명된 분산의 비율

설명된 분산의 비율 explained variance ratio

  • 공분산 행렬의 고유값
  • 투영한 분산의 비율
  • 주성분 선택된 순으로 작아짐

5. 적절한 차원 수 선택하기

차원 수를 임의로 정하는 것보다는 충분한 분산5이 될 떄까지 선택

6. 압축을 위한 PCA

참고

중요한 특징만을 살리기 위해 PCA를 시도하여 차원 축소하였다.

이후 원본 데이터로 돌아가려 할 때 특징은 살아있지만 완벽히 데이터셋이 일치하지 않는데,

여기서 이 오류를 재구성 오차 = 재건 오류 reconstruction error 라고 한다.

\(X_{n \times M} = X_{d-proj,n \times d} (W_{d,n \times d})^\top\)

7. 커널 PCA

차원 축소를 통해 비선형 투영 수행

\(\zeta = \Psi \alpha\)

  • 이 때, \(||\alpha_j|| = 1\)로 정규화한다.
  • 그러기 위해 \(\alpha_j\)\(||\zeta_j||\)로 나누어 정규화
    • \(||\zeta_j|| = \sqrt{\lambda}_j\)
    • \(\alpha_j \to \frac{1}{\sqrt{\lambda}_j} \alpha_j, j=1, \dots, m\)

특징 벡터로 내적하여 나오는 커널\(K\) 행렬로 중심화

  • \(K = HKH\)
  • \(H = I_n - 1_{n \times 1} /n\)

\(\alpha\) 정규화 한 후 중심화하면

\((z_1, \dots, z_n) = (\frac{1}{\sqrt{\lambda_1}} \alpha_1,\dots , \frac{1}{\sqrt{\lambda_m}}\alpha_m)^\top HKH\)

  • 여기서 m개가 주성분!

image

\(\star\) 고유벡터

  • 선형 \(C = \psi \psi^\top\)
  • 비선형 \(K = \psi^\top \psi\)
    • \(\psi\)의 길이에 따라 고유값 문제의 표현을 다르게 하여 계산 시간 줄이기
    • 차원 수가 표본 수보다 큰 경우에는 커널 행렬을 사용하는 것이 효율적

Footnotes

  1. 샘플과 평면 사이의 가장 짧은 직선을 따라↩︎

  2. 이를 매니폴드 가설 또는 매니폴드 가정이라 한다.↩︎

  3. 무조건적인 차원축소는 피할 것↩︎

  4. X로 복원 가능해야 함↩︎

  5. 예를 들어 설명된 분산의 비율이 약 95%까지↩︎